package TOP_Version1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLRecoverableException;
import java.util.Scanner;

public class Top_ProfessorRead {
	static Top_JDBC_SQL topsql = new Top_JDBC_SQL();
	static StringBuilder sb = new StringBuilder();
	static Scanner sc = new Scanner(System.in);
	static String[] smt = { "순번", "교수번호", "교수이름", "교수 연락처", "교수 주소", "교수 사무실", "등록일자" };
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static String add = null;
	static boolean b = true;
	static String logid = Top_LoginMain.logIdVO;
	
	public static void readProfessor() {
		
		sb.append("\n교수 정보 검색").append("\n[ 01 ] 교수 전체 검색").append("\n[ 02 ] 교수 번호 검색")
		.append("\n[ 03 ] 교수 이름 검색").append("\n[ 00 ] 상위 메뉴로 이동");
		System.out.println(sb);
		while ( b ) {
			System.out.print("수행하실 업무를 선택하세요 : ");
			switch ( sc.next() ) {
			case "1" : case "01" :
				ProfessorFindAll(); b = false; break;
			case "2" : case "02" :
				ProfessorFindNo(); b = false; break;
			case "3" : case "03" :
				ProfessorFindName(); b = false; break;
			case "0" : case "00" :
				System.err.println("교수 관련 업무 화면으로 이동합니다.");
				Top_ProfessorMain.Top_ProfessorAdminScreen();
			default :
				System.err.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
	
	public static void ProfessorFindAll() {
		sb = new StringBuilder();
		try {
			conn = Top_JDBC_Connection.openDataBase();
			pstmt = conn.prepareStatement(topsql.ProfessorSelectAll1SQL);
			rs = pstmt.executeQuery();
			sb.append(String.format("%-3s", smt[0])).append(String.format("%-5s", smt[1]))
			.append(String.format("%-8s", smt[2])).append(String.format("%-15s", smt[3]))
			.append(String.format("%-20s", smt[4])).append(String.format("%-15s", smt[5]))
			.append(String.format("%-20s", smt[6])).append("\n");
			int count = 1;
			while ( rs.next() ) {
				sb.append(String.format("%-3s", count ++ )).append(String.format("%-3s", rs.getString( 1 )))
				.append(String.format("%-5s", rs.getString( 2 )))	.append(String.format("%-8s", rs.getString( 3 )))
				.append(String.format("%-15s", rs.getString( 4 ))).append(String.format("%-20s", rs.getString( 5 )))
				.append(String.format("%-15s", rs.getString( 6 ))).append("\n");
			}
			System.out.println( sb.toString() );
			System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요.");
			System.in.read();
			System.in.read();
			readProfessor();
		} catch ( SQLRecoverableException se ) {
			System.err.println("데이터베이스 연결에 실패했습니다. 네트워크를 확인하세요. 시스템을 종료합니다.");
			System.exit(0);
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
		}
	}
	
	public static void ProfessorFindNo() {
		
		System.out.print("조회하실 교수번호를 입력하세요 : ");
		add = sc.next();
		try {
			conn = Top_JDBC_Connection.openDataBase();
			pstmt = conn.prepareStatement(topsql.ProfessorSelectNoSQL);
			pstmt.setString( 1,  add );
			rs = pstmt.executeQuery();
			sb.append(String.format("%-3s", smt[0])).append(String.format("%-5s", smt[1]))
			.append(String.format("%-8s", smt[2])).append(String.format("%-15s", smt[3]))
			.append(String.format("%-20s", smt[4])).append(String.format("%-15s", smt[5]))
			.append(String.format("%-20s", smt[6])).append("\n");
			int count = 1;
			while ( rs.next() ) {
				sb.append(String.format("%-3s", count ++ )).append(String.format("%-3s", rs.getString( 1 )))
				.append(String.format("%-5s", rs.getString( 2 )))	.append(String.format("%-8s", rs.getString( 3 )))
				.append(String.format("%-15s", rs.getString( 4 ))).append(String.format("%-20s", rs.getString( 5 )))
				.append(String.format("%-15s", rs.getString( 6 ))).append("\n");
			}
			System.out.println( sb.toString() );
			System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요.");
			System.in.read();
			System.in.read();
			readProfessor();
		} catch ( SQLRecoverableException se ) {
			System.err.println("데이터베이스 연결에 실패했습니다. 네트워크를 확인하세요. 시스템을 종료합니다.");
			System.exit(0);
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
		}
	}
	
	public static void ProfessorFindName() {
		
		System.out.print("조회하실 교수이름을 입력하세요 : ");
		add = sc.next();
		try {
			conn = Top_JDBC_Connection.openDataBase();
			pstmt = conn.prepareStatement(topsql.ProfessorSelectNameSQL);
			pstmt.setString( 1,  add );
			rs = pstmt.executeQuery();
			sb.append(String.format("%-3s", smt[0])).append(String.format("%-5s", smt[1]))
			.append(String.format("%-8s", smt[2])).append(String.format("%-15s", smt[3]))
			.append(String.format("%-20s", smt[4])).append(String.format("%-15s", smt[5]))
			.append(String.format("%-20s", smt[6])).append("\n");
			int count = 1;
			while ( rs.next() ) {
				sb.append(String.format("%-3s", count ++ )).append(String.format("%-3s", rs.getString( 1 )))
				.append(String.format("%-5s", rs.getString( 2 )))	.append(String.format("%-8s", rs.getString( 3 )))
				.append(String.format("%-15s", rs.getString( 4 ))).append(String.format("%-20s", rs.getString( 5 )))
				.append(String.format("%-15s", rs.getString( 6 ))).append("\n");
			}
			System.out.println( sb.toString() );
			System.out.println("계속 진행하시려면 [ ENTER KEY ] 를 입력하세요.");
			System.in.read();
			System.in.read();
			readProfessor();
		} catch ( SQLRecoverableException se ) {
			System.err.println("데이터베이스 연결에 실패했습니다. 네트워크를 확인하세요. 시스템을 종료합니다.");
			System.exit(0);
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
		}
	}
}